package Utils

import (
	"encoding/json"
	"github.com/sentiger/ftcp/Iface"
	"io/ioutil"
)

type GlobalObj struct {
	TcpServer        Iface.IServer //当前的全局Server对象
	Host             string        //当前服务器主机IP
	TcpPort          int           //当前服务器主机监听端口号
	Name             string        //当前服务器名称
	Version          string        //当前版本号
	MaxPacketSize    uint32        //都需数据包的最大值
	MaxConn          int           //当前服务器主机允许的最大链接个数
	WorkerPoolSize   uint32        // work数量
	MaxWorkerTaskLen uint32        //每个worker对应最大的处理连接
	MaxMsgChanLen    uint32        // 发送数据到客户端缓冲大小
}

var GlobalObject *GlobalObj

func (g *GlobalObj) Reload() {
	data, err := ioutil.ReadFile("conf/ftcp.json")
	if err != nil {
		panic(err)
	}
	err = json.Unmarshal(data, &GlobalObject)
	if err != nil {
		panic(err)
	}

}
func init() {
	//初始化GlobalObject变量，设置一些默认值
	GlobalObject = &GlobalObj{
		Name:             "ftcp",
		Version:          "V0.4",
		TcpPort:          7777,
		Host:             "0.0.0.0",
		MaxConn:          12000,
		MaxPacketSize:    4096,
		WorkerPoolSize:   200,  // 真正的处理业务worker
		MaxWorkerTaskLen: 1024, //这个表示一个worker进程中处理任务，在一个worker进程中是同步阻塞执行的
		MaxMsgChanLen:    16,
	}
	//从配置文件中加载一些用户配置的参数
	GlobalObject.Reload()
}
